package com.charity.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.charity.domain.Project;
import com.charity.domain.Volunteer;

public interface IVolunteerService {
    /**
     * 注册志愿者
     * @param volunteer 志愿者信息
     * @return 注册结果
     */
    boolean register(Volunteer volunteer);

    /**
     * 审核志愿者
     * @param volunteerId 志愿者ID
     * @param status 审核状态
     * @param remark 审核备注
     * @return 审核结果
     */
    boolean auditVolunteer(Long volunteerId, Integer status, String remark);

    /**
     * 创建志愿者信息
     * @param volunteer 志愿者信息
     * @return 创建结果
     */
    boolean createVolunteer(Volunteer volunteer);

    /**
     * 更新志愿者信息
     * @param volunteer 志愿者信息
     * @return 更新结果
     */
    boolean updateVolunteer(Volunteer volunteer);

    /**
     * 删除志愿者信息
     * @param volunteerId 志愿者ID
     * @return 删除结果
     */
    boolean deleteVolunteer(Long volunteerId);

    /**
     * 获取志愿者详情
     * @param volunteerId 志愿者ID
     * @return 志愿者信息
     */
    Volunteer getVolunteerById(Long volunteerId);

    /**
     * 获取志愿者列表
     * @param status 志愿者状态（可选）
     * @param pageNum 页码
     * @param pageSize 每页数量
     * @return 志愿者列表
     */
    Page<Volunteer> getVolunteerList(Integer status, int pageNum, int pageSize);

    /**
     * 更新志愿者状态
     * @param volunteerId 志愿者ID
     * @param status 新状态
     * @return 更新结果
     */
    boolean updateVolunteerStatus(Long volunteerId, Integer status);

    /**
     * 获取志愿者参与的项目列表
     * @param volunteerId 志愿者ID
     * @param pageNum 页码
     * @param pageSize 每页数量
     * @return 项目列表
     */
    Page<Project> getVolunteerProjects(Long volunteerId, int pageNum, int pageSize);

    /**
     * 志愿者加入项目
     * @param volunteerId 志愿者ID
     * @param projectId 项目ID
     * @return 加入结果
     */
    boolean joinProject(Long volunteerId, Long projectId);

    /**
     * 志愿者退出项目
     * @param volunteerId 志愿者ID
     * @param projectId 项目ID
     * @return 退出结果
     */
    boolean quitProject(Long volunteerId, Long projectId);
}